﻿using SC2BuildPlannerLib.Enums;
using SC2BuildPlannerLib.Resources;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace SC2BuildPlannerLib
{
    /// <summary>
    /// The main data class for an SC2BuildPlanner simulation
    /// </summary>
    public class BuildPlanner
    {
        /// <summary>
        /// Property for the patch/expansion level being simulated
        /// </summary>
        private PatchExpansion _patchExpansion;
        public PatchExpansion PatchExpansion
        {
            get { return _patchExpansion; }
            set { _patchExpansion = value; }
        }

        /// <summary>
        /// Property for the race being simulated
        /// </summary>
        private Race _race;
        public Race Race
        {
            get { return _race; }
            set { _race = value; }
        }

        /// <summary>
        /// Property for the index in the action list of the next action to be simulated
        /// </summary>
        private int _nextActionIndex;
        public int NextActionIndex
        {
            get { return _nextActionIndex; }
            set { _nextActionIndex = value; }
        }

        /// <summary>
        /// Property for the current time of the simulation
        /// </summary>
        private TimeSpan _currentTime;
        public TimeSpan CurrentTime
        {
            get { return _currentTime; }
            set { _currentTime = value; }
        }

        /// <summary>
        /// Property for mineral data
        /// </summary>
        private Resource _minerals;
        public Resource Minerals
        {
            get { return _minerals; }
            set { _minerals = value; }
        }

        /// <summary>
        /// Property for gas data
        /// </summary>
        private Resource _gas;
        public Resource Gas
        {
            get { return _gas; }
            set { _gas = value; }
        }

        /// <summary>
        /// Property for supply data
        /// </summary>
        private Supply _supply;
        public Supply Supply
        {
            get { return _supply; }
            set { _supply = value; }
        }

        /// <summary>
        /// ObservableCollection field for OC/Queen/Nexus energy data
        /// </summary>
        public ObservableCollection<Resource> Energy;


    }
}
